
export default function(gl){
  // 2、glsl程序代码
  const vertexShaderSource = `
    attribute vec3 a_position; // 顶点位置属性 每一条语句后的分号不能少
    attribute vec4 a_color;
    varying vec4 vColor;
    uniform mat4 x_matrix;
    uniform mat4 y_matrix;

    void main() {
      gl_Position = x_matrix * y_matrix * vec4(a_position, 1.0); // 设置顶点位置
      gl_PointSize = 10.0; // 设置点的大小
      vColor = a_color; // 设置片段的颜色
    }
  `;

  const fragmentShaderSource = `
    precision highp float; //定义精度
    // precision mediump uniform; //定义精度
    uniform vec4 uColor;
    varying vec4 vColor;
    void main() {
      // gl_FragColor = vColor; // 设置片段的颜色
      gl_FragColor = uColor; // 设置片段的颜色
    }
  `;
  
  // 创建并编译着色器
  const vertexShader = gl.createShader(gl.VERTEX_SHADER); //创建顶点着色器对象
  gl.shaderSource(vertexShader, vertexShaderSource); //绑定着色器源码
  gl.compileShader(vertexShader); //编译着色器源码
  
  
  const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); //创建片元着色器对象
  gl.shaderSource(fragmentShader, fragmentShaderSource); //绑定着色器源码
  gl.compileShader(fragmentShader); //编译着色器源码
  
  
  // 创建并链接着色器程序
  const program = gl.createProgram(); //创建程序对象
  gl.attachShader(program, vertexShader); //附加编译好的顶点着色器
  gl.attachShader(program, fragmentShader); //附加编译好的片元着色器
  gl.linkProgram(program); //链接程序对象
  gl.useProgram(program); //指定的程序对象设置为当前的渲染状态

  return program
}
